﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using BLLTZS.Funcionalidad;
using BLLTZS;
using System.Drawing;
using System.IO;

namespace TZS.Cuentas
{
    public partial class EditarDNI : FormGenerico
    {
        private void SubirArchivoDNI(FileUpload fileUploader, Label lblResultado, bool esPrimera)
        {
            string pathArchivo = string.Empty;

            try
            {
                if (fileUploader.FileName == null || fileUploader.FileName == string.Empty)
                    return;

                string[] array = fileUploader.FileName.Split(new string[] { "." }, StringSplitOptions.RemoveEmptyEntries);
                if (array.Length == 0)
                    return;

                string formato = array[array.Length - 1];
                if (!Properties.Resources.FormatosImagen.Contains(formato.ToLower()))
                {
                    lblResultado.Text = "Formato de archivo no permitido";
                    lblResultado.ForeColor = Color.Red;
                    SetearVisibilidad(lblResultado, true);
                    return;
                }

                TZS_Usuario usuario = new BLLUsuario().TraerUsuario(User.Identity.Name);
                string nombreArchivo = GenerarNombreArchivoValido(string.Format("{0}-{1}-{2}.{3}", usuario.IdUsuario, usuario.NombreUsuario, "DNI", formato), formato, URLParaDNI);
                pathArchivo = MapPath(string.Format(URLParaDNI, nombreArchivo));
                fileUploader.SaveAs(pathArchivo);

                BLLPerfil bllPerfil = new BLLPerfil();
                TZS_Perfil perfil = bllPerfil.TraerUltimaVersion(User.Identity.Name);
                TZS_Perfil nuevaVersion = new TZS_Perfil();
                nuevaVersion.Apellidos = perfil.Apellidos;
                nuevaVersion.ArchivoCV = perfil.ArchivoCV;
                nuevaVersion.ArchivoDNI = perfil.ArchivoDNI;
                nuevaVersion.ArchivoDNI2 = perfil.ArchivoDNI2;
                nuevaVersion.DNI = perfil.DNI;
                nuevaVersion.FechaNacimiento = perfil.FechaNacimiento;
                nuevaVersion.Nombres = perfil.Nombres;
                nuevaVersion.TZS_Usuario = perfil.TZS_Usuario;

                if (esPrimera)
                    nuevaVersion.ArchivoDNI = nombreArchivo;
                else
                    nuevaVersion.ArchivoDNI2 = nombreArchivo;

                bllPerfil.GuardarNuevaVersion(nuevaVersion, User.Identity.Name);
                bllPerfil.GuardarCambios();

                lblResultado.Text = "Su DNI ha sido subido exitosamente";
                lblResultado.ForeColor = Color.Green;
                SetearVisibilidad(lblResultado, true);
            }
            catch (Exception ex)
            {
                lblResultado.Text = "Ha ocurrido un error al intentar subir el archivo, intente más tarde.";
                lblResultado.ForeColor = Color.Red;
                SetearVisibilidad(lblResultado, true);

                if (pathArchivo != string.Empty && File.Exists(pathArchivo))
                    File.Delete(pathArchivo);
            }
        }

        private void ActualizarTODO()
        {
            BLLPerfil bllPerfil = new BLLPerfil();
            TZS_Perfil perfil = bllPerfil.TraerUltimaVersion(User.Identity.Name);

            if (rdoEsNuevo.Checked)
            {
                lblTituloTipoDNIPrimeraHoja.Text = "Subiendo lado frontal del DNI";
                lblTextoTipoDNIPrimeraHoja.Text = "Tenés que subir una imagen escaneada ó foto del lado frontal de tu DNI como la de este ejemplo:";
                lblTituloTipoDNISegundaHoja.Text = "Subiendo lado reverso del DNI";
                lblTextoTipoDNISegundaHoja.Text = "Tenés que subir una imagen escaneada ó foto del lado reverso de tu DNI como la de este ejemplo:";
                imgEjemploPrimerHoja.ImageUrl = "~/Contenido/Imagenes/DNINuevo.jpg";
                imgEjemploSegundaHoja.ImageUrl = "~/Contenido/Imagenes/DNINuevo2.jpg";

                if (perfil.ArchivoDNI == null)
                    lblComprobacionPrimera.Text = "Falta la imagen escaneada ó foto del frente de tu DNI, revisalo en el paso 2";
                if (perfil.ArchivoDNI2 == null)
                    lblComprobacionSegunda.Text = "Falta la imagen escaneada ó foto del reverso de tu DNI, revisalo en el paso 3";
            }
            else
            {
                lblTituloTipoDNIPrimeraHoja.Text = "Subiendo 1° Hoja del DNI";
                lblTextoTipoDNIPrimeraHoja.Text = "Tenés que subir una imagen escaneada ó foto de la 1° Hoja de tu DNI como la de este ejemplo:";
                lblTituloTipoDNISegundaHoja.Text = "Subiendo 2° Hoja del DNI";
                lblTextoTipoDNISegundaHoja.Text = "Tenés que subir una imagen escaneada ó foto de la 2° Hoja de tu DNI como la de este ejemplo:";
                imgEjemploPrimerHoja.ImageUrl = "~/Contenido/Imagenes/DNIViejo.jpg";
                imgEjemploSegundaHoja.ImageUrl = "~/Contenido/Imagenes/DNIViejo2.jpg";

                if (perfil.ArchivoDNI == null)
                    lblComprobacionPrimera.Text = "Falta la imagen escaneada ó foto de la 1° hoja de tu DNI, revisalo en el paso 2";
                if (perfil.ArchivoDNI2 == null)
                    lblComprobacionSegunda.Text = "Falta la imagen escaneada ó foto de la 2° hoja de tu DNI, revisalo en el paso 3";
            }

            if (perfil.ArchivoDNI == null)
            {
                imgDniPrimera.ImageUrl = "/Contenido/Imagenes/Forbidden.png";
                lblComprobacionPrimera.ForeColor = Color.Red;
                SetearVisibilidad(lnkVerArchivoPrimero, false);
            }
            else
            {
                if(perfil.ArchivoDNI.Contains(".pdf"))
                    imgDniPrimera.ImageUrl = "/Contenido/Imagenes/logoPDF.png";
                else
                    imgDniPrimera.ImageUrl = string.Format(URLParaMostrarDNI, perfil.ArchivoDNI);

                lblComprobacionPrimera.Text = "La imagen fue subida con éxito";
                lblComprobacionPrimera.ForeColor = Color.Green;
                lnkVerArchivoPrimero.NavigateUrl = string.Format(URLParaMostrarDNI, perfil.ArchivoDNI);
                SetearVisibilidad(lnkVerArchivoPrimero, true);
            }

            if (perfil.ArchivoDNI2 == null)
            {
                imgDniSegunda.ImageUrl = "/Contenido/Imagenes/Forbidden.png";
                lblComprobacionSegunda.ForeColor = Color.Red;
                SetearVisibilidad(lnkVerArchivoSegundo, false);
            }
            else
            {
                if(perfil.ArchivoDNI2.Contains(".pdf"))
                    imgDniSegunda.ImageUrl = "/Contenido/Imagenes/logoPDF.png";
                else
                    imgDniSegunda.ImageUrl = string.Format(URLParaMostrarDNI, perfil.ArchivoDNI2);

                lblComprobacionSegunda.Text = "La imagen fue subida con éxito";
                lblComprobacionSegunda.ForeColor = Color.Green;
                SetearVisibilidad(lnkVerArchivoSegundo, true);
                lnkVerArchivoSegundo.NavigateUrl = string.Format(URLParaMostrarDNI, perfil.ArchivoDNI2);
            }
        }

        protected void Page_Load(object sender, EventArgs e)
        {

        }

        protected void wizDNI_ActiveStepChanged(object sender, EventArgs e)
        {
            ActualizarTODO();
        }

        protected void btnSubirPrimeraHoja_Click(object sender, EventArgs e)
        {
            SubirArchivoDNI(fuSubirPrimerHoja, lblFuSubirPrimeraHoja, true);
            ActualizarTODO();
        }

        protected void btnSubirSegundaHoja_Click(object sender, EventArgs e)
        {
            SubirArchivoDNI(fuSubirSegundaHoja, lblFuSubirSegundaHoja, false);
            ActualizarTODO();
        }

        protected void wizDNI_FinishButtonClick(object sender, WizardNavigationEventArgs e)
        {
            Response.Redirect("MisDatos.aspx");
        }
    }
}